\section{开始写\LaTeX}

很多人第一眼看到\LaTeX 估计会感到很不习惯：喵\dots\dots 这是什么玩意？！怎么写个论文都有打代码既视感\dots\dots

\LaTeX 并非Word一类所见即所得的文字编辑软件。在\LaTeX 中，你要先写一个类似代码的``源文件"，然后把这个``源文件''编译为你想要的文档。新手可能觉得很不习惯，但这么做有他的道理。

\LaTeX 属于这样一类软件：对新手极端不友好但是在高级玩家手里就是个神器。很多时候软件必须在易用和好用之间作出权衡。和大多数面向技术人员的软件一样，\LaTeX 偏向于后者。所以我只能建议大家多练习，并且在使用的过程中用心体会\LaTeX 为什么会被设计成这个样子。

幸运的是，很多\LaTeX 编辑器提供了代码生成器、实时预览等功能，这让写\LaTeX 轻松了不少。

\subsection{\LaTeX 文档的结构}

一篇\LaTeX 撰写文档是层次分明的，它会分为若干节，每一节又会分为若干小节，每一小节又分为\dots\dots 就像许多在线百科那样。你可能认为这样的结构是不是有点太死板了，但毕竟\LaTeX 是用来写技术性的文档的，又没人让你拿它写散文。

\LaTeX 文档的源代码由导言区和正文组成。一篇典型的\LaTeX 文档代码看起来是这个样子的：

{
\ttfamily
\begin{lstlisting}[frame=single,language=Tex]
\documentclass{article}
\usepackage{ctex}
\title{Sample}
\author{Foobar}

\begin{document}
\maketitle
\section{English}
This is a \LaTeX document.
\section{中文}
再说一遍，这是一个\LaTeX 文档。
\end{document}
\end{lstlisting}
}

\verb|\begin{document}|之前的部分称作``导言区''，它类似于HTML中的\textit{head}部分。在导言区中，你需要说明文档的一些基本信息，例如文档的类型、标题、作者、使用哪些宏包等。
\begin{itemize}
    \item \verb|\documentclass{article}|声明了这篇文档的类型为``文章''。如果你想写一本书，那么就要把``article''换成``book''。此外还有为长于短文但短于书籍的长文章设计的文档类型\verb|report|。
    \item \verb|\usepackage{ctex}|表示使用一个名为\textit{ctex}的宏包。宏包类似编程语言中的``库''，可以添加一些额外的功能。\verb|ctex|宏包的作用是添加中文支持。
    \item \verb|\title{Sample}|表示标题是``Sample''。
    \item \verb|\author{Foobar}|表示作者是Foobar。
\end{itemize}

为了避免奇奇怪怪的错误，导言区的正确顺序为：
\begin{enumerate}
    \item \verb|\documentclass{...}|
    \item \verb|\usepackage{...}|
    \item 其他内容
\end{enumerate}


\verb|\begin{document}|和\verb|\end{document}|之间的区域是文档的正文。

\begin{itemize}
    \item \verb|\maketitle|插入文章标题。标题下方会附上文章的作者和日期。想要使用\verb|\maketitle|，就必须在导言区使用\verb|\title|指定标题，使用\verb|\author|指定作者。日期是根据文档编译的日期自动生成的，也可以在导言区使用\verb|\date{<日期>}|指定日期。
    \item \verb|\tableofcontents|插入一个目录，目录内容会根据文章所包含的章节自动生成。当文档结构改变时，可能需要编译两次才能正确生成目录。
    \item \verb|\section{English}|表示开始一个题为``English''的节。
\end{itemize}

类似的还有\verb|\subsection{<标题>}|（小节）、\verb|\subsubsection{<标题>}|（小小节）、\verb|\paragraph{<标题>}|（段落）、\verb|\subparagraph{<标题>}|（小段落）。此外，在\verb|book|与\verb|report|类型的文档中，还有比\verb|section|更高一级的\verb|\chapter{<标题>}|（章）。\LaTeX 会自动为你的所有章节编号。

此外，\LaTeX 提供了\verb|\appendix|命令，出现在该命令之后的章节都会被视为附录。正文部分的章节默认使用数字编号，而附录部分的章节默认使用英文字母编号。

\subsection{命令与环境}

\LaTeX 中以一个``\bs''开头的单词称作``命令''。一个命令的作用有设置格式、插入一个特殊符号以及插入一小段带特殊格式的文本等，例如：
\begin{itemize}
    \item \verb|\ttfamily|将字体设置为等宽字体。
    \item \verb|\small|、\verb|\large|等可以设置字号。
    \item \verb|\LaTeX|插入一个符号\LaTeX。
    \item \verb|\textit{Italic font}|插入一小段斜体文字\textit{Italic font}。
    \item \verb|\marginpar{边注内容}|插入一段边注，示例见右侧。
    \item \verb|\footnote{脚注内容}|插入一段脚注。
\end{itemize}
\marginpar{\small 笔者显然不是卷王，否则就不会教你们用\LaTeX 了}
\begin{tabular}[c]{cc} \\
\begin{minipage}{0.48\textwidth} \small
\begin{verbatim}
卷王的目的只有一个：卷死其他所有人
\footnote{自己的男（女）朋友除外}。
\end{verbatim}
\end{minipage}
&
\begin{minipage}{0.48\textwidth} \small
卷王的目的只有一个：卷死其他所有人
\footnote{自己的男（女）朋友除外}。
\end{minipage}
\\ \\
\end{tabular}

有的命令需要一个或多个参数。参数放在紧跟命令之后的花括号中，例如\verb|\textit{Italic font}|，有的命令还可以带上可有可无的可选参数，可选参数放在中括号里。一般地，命令的格式为：
{
\ttfamily
\begin{lstlisting}[frame=single,language=Tex]
\命令名[可选参数]{参数1}{参数2}...
\end{lstlisting}
}

许多设置格式的命令作用范围是从命令之后到文档结尾。你可以用一对花括号来限定命令的作用范围，例如：
{
\ttfamily
\begin{lstlisting}[frame=single,language=Tex]
正常字体
{
\ttfamily
花括号里面是等宽字体
}
这里恢复了正常字体
\end{lstlisting}
}
正常字体
{
\ttfamily
花括号里面是等宽字体
}
这里恢复了正常字体

使用\verb|\renewcommand{命令名称}{新定义}|可以重新定义一个已经存在的命令。在某些情况下，\verb|\renewcommand|被用作对一些自动生成的文档元素进行自定义的手段。例如，在下文中要介绍的\verb|abstract|环境用于插入文章摘要，这个环境会自动生成带有预设格式的“摘要”二字。这背后的原理可以理解为这个环境会自动为你插入一个\verb|\abstractname|命令，而\verb|\abstractname|命令被预先定义为插入指定格式的“摘要”二字。如果你想要自定义“摘要”二字的格式，或者将其替换为其他内容，则可以用\verb|\renewcommand|重新定义\verb|\abstractname|，例如：

{
\ttfamily
\begin{lstlisting}[frame=single,language=Tex]
% 将“摘要”二字替换为“太长不看”
\renewcommand{\abstractname}{太长不看}
\end{lstlisting}
}

在\verb|begin{...}|和\verb|end{...}|之间的部分称作一个环境。环境一般用来插入表格、代码块、列表等文档元素，例如\texttt{itemize}环境插入一个列表：
\\
\begin{tabular}[c]{cc}
\\
\begin{minipage}{0.48\textwidth} \small
\begin{verbatim}
\begin{itemize}
    \item 项目1
    \item 项目2
    \item 项目3。
\end{itemize}
\end{verbatim}
\end{minipage}
&
\begin{minipage}{0.48\textwidth} \small
\begin{itemize}
    \item 项目1
    \item 项目2
    \item 项目3。
\end{itemize}
\end{minipage}
\\ \\
\end{tabular}

\renewcommand{\abstractname}{摘要}
使用\verb|\abstract|环境可以插入文章的摘要，例如：
\\
\begin{tabular}[c]{cc} \\
\begin{minipage}{0.48\textwidth} \small
\begin{verbatim}
\begin{abstract}
这是一篇简短的\LaTeX 介绍。
\end{abstract}
\end{verbatim}
\end{minipage}
&
\begin{minipage}{0.48\textwidth} \small
\begin{abstract}
这是一篇简短的\LaTeX 介绍。
\end{abstract}
\end{minipage}
\\ \\
\end{tabular}

同样的，环境也可以带参数。一般地，环境的格式为：
{
\ttfamily
\begin{lstlisting}[frame=single,language=Tex]
\begin{环境名}[可选参数]{参数1}{参数2}...
    环境内容
\end{环境名}
\end{lstlisting}
}

注意命令与环境的名称是区分大小写的。有些命令和环境有一个带星号的版本，例如\texttt{section}和\texttt{section*}。带星号的版本和标准版本的效果略有不同。

\subsection{空白字符与特殊字符}

就像在C语言中一样，在\LaTeX 中，所有的空格，Tab等空白字符都会被看作是一个\textbf{分隔符} ，而不是空格或Tab本身，而连续多个空格或Tab的作用和一个空格完全相同。因此建议在所有不带参数的命令后面跟上一个空格，来避免奇奇怪怪的错误。这个空格起到分隔符的作用，它标志着命令到此结束，而不会真的插入一个空格。同理，在两个英文单词之间，无论你打多少个空格，\LaTeX 都会将其视为一个空格；而在中文中间输入的空格会被直接忽略。如果你真的想要插入一个空格，应当输入一对空的花括号，后面跟上一个空格，例如：
\\
\begin{tabular}[c]{cc} \\
\begin{minipage}{0.48\textwidth} \small
\begin{verbatim}
We are all \LaTeX users   now.

We are all \LaTeX{} users now.

现在{} 我们是\LaTeX 用   户了。
\end{verbatim}
\end{minipage}
&
\begin{minipage}{0.48\textwidth} \small
We are all \LaTeX users   now.

We are all \LaTeX{} users now.

现在{} 我们是\LaTeX 用   户了。
\end{minipage}
\\ \\
\end{tabular}

一个回车的作用也是分隔符，如果想要分段，应该让两段之间隔一个空行，也就是打两个回车。使用\verb|\\|可以实现换行而不分段。可以看到，在下方的换行而不分段的示例中，第二行没有触发每段开头的首行缩进。
\\
\begin{tabular}[c]{cc} \\
\begin{minipage}{0.48\textwidth} \small
\begin{verbatim}
这样写
不会分段

必须得这样写

才会分段

这样可以实现换行\\
而不分段
\end{verbatim}
\end{minipage}
&
\begin{minipage}{0.48\textwidth} \small
\setlength{\parindent}{2em}
这样写
不会分段

必须得这样写

才会分段

这样可以实现换行\\
而不分段
\end{minipage}
\\ \\
\end{tabular}

在\LaTeX 中，``\verb|%|''表示单行注释，即在一行中从``\verb|%|''开始到行尾的内容会被编译器忽略。注释的作用在于记录一些对编写文档的人很重要，但不希望出现在最终的文档里的信息。在\LaTeX 中，字符 ``\verb|%|''、``\verb|&|''、``\verb|#|''、 ``\verb|^|''、 ``\verb|_|''、``\verb|~|''、 ``\verb|$|''、 ``\verb|{|''、 ``\verb|}|'' 为特殊字符，不能被直接输入。想要输入这些字符需要在前面加上一个反斜杠``\textbackslash''进行转义。例如，如果你想要输入一个百分号，你需要输入``\verb|\%|''。而如果你要输入一个反斜杠，那么你需要输入``\verb|\textbackslash|''。\footnote{在公式中应使用``\textbackslash backslash''插入反斜杠。}

\subsection{中文支持}

\LaTeX 默认只支持英文，如果你直接编译一个含有非英文字符的\LaTeX 文件，你会发现所有的非英文字符全都消失了。要想支持其他语言例如中文，需要使用相关的语言支持宏包。中文的语言支持宏包名为\textit{ctex}，你需要在导言区加入\verb|\usepackage{ctex}|。或者你也可以直接写\verb|\documentclass{ctexart}|，这样就会自动加入中文支持，而无需再手动写一个\verb|\usepackage{ctex}|。注意\textit{ctexart}和\textit{article}在排版风格上有一点点细微的差异。

同时建议使用\texttt{xelatex}编译器，并且将源文件保存为UTF-8编码（Windows下许多软件默认采用较老的GBK编码），以提高兼容性，避免奇奇怪怪的错误发生。

